#include<stdio.h>

//选择排序（升序） 
//参数说明：数组，数组中已有元素个数 
void selectSort(int data[],int elementCount) ;

//函数功能：找数组中的最小值元素，并返回其下标 
//参数说明：数组名，查找起始位置下标，查找终止位置下标
int findMin(int data[], int startLoc, int endLoc) ; 

//输出数组中所有元素 
//参数说明：数组，数组中已有元素个数 
void outputData(int data[],int elementCount) ;

int main()
{
    int        n , i,    num[1010] ;

    scanf("%d",&n); 
    for( i = 0 ; i < n ; i++ ) 
        scanf("%d",&num[i]) ;
    selectSort(num,n) ; 
    return 0 ;
}
int findMin(int data[], int startLoc, int endLoc)//数组名，查找起始位置下标，查找终止位置下标
{
    int min=data[startLoc],t=startLoc;
    for(int i=startLoc;i<=endLoc;i++)
    {
        if(min>data[i])
        {
            min=data[i];
            t=i;
        }
    }
    return t;
}
void outputData(int data[],int elementCount)
{
    for(int i=0;i<elementCount;i++)
    {
        printf("%d",data[i]);
        if(i!=elementCount-1)
            printf(" ");
    }
    printf("\n");
}
void selectSort(int data[],int elementCount)
{
    for(int p=0;p<elementCount-1;p++)
    {
        int min;
        min=findMin(data,p,elementCount-1);
        int e;
        e=data[p];
        data[p]=data[min];
        data[min]=e;
        outputData(data,elementCount);
    }
}
